//
//  tutu_core.h
//  device
//
//  Created by ffly on 2021/3/14.
//

#ifndef __XLX_CORE_H__
#define __XLX_CORE_H__

#include "xlx_define.h"

typedef enum {
    //有卡
    SIM_Yes,
    //无卡
    SIM_No,
    //gsm可用
    GSM_Yes,
    //gsm不可用
    GSM_No,
    //流量可用
    GPRS_Yes,
    //流量不可用
    GRPS_No,
}SIM_EVENT_STATE;

#if 1
extern TutuQueue TUTUG(queue);
extern TutuThread TUTUG(thread);
extern TutuOS TUTUG(os);
extern TutuSocket TUTUG(socket);
extern TutuFile TUTUG(file);
//全局状态
extern TutuConfig TUTUG(config);
extern TutuServerCfg TUTUG(servercfg);
//全局内存参数
extern TutuGlobalParam TUTUG(param);
extern TutuTcpSocket TUTUG(tcp);
#else
//硬件功能适配部分

extern TutuLed TUTUG(led);

extern TutuRecordAudio TUTUG(audio);
extern TutuGps TUTUG(gps);
extern TutuSensor TUTUG(sensor);
extern TutuRil TUTUG(ril);
extern TutuBattery TUTUG(battery);

extern TutuSms TUTUG(sms);
extern TutuTimer TUTUG(timer);
extern TutuWifi TUTUG(wifi);
extern TutuTel TUTUG(tel);

extern TutuUartGps TUTUG(uartgps);
extern TutuStation TUTUG(station);




#endif




/**
 * 工厂测试模式
 * 1：测试模式  0：正常模式
 */
extern int tutu_factory_test_mode;

/**
 * 当前设备环境是否为大端
 * 1：大端  0：小端
 */
extern int tutu_is_bigendian;

/**
 * 控制是否打印logger
 * 1:打印logger，  0：不打印logger
 */
extern int tutu_show_logger;
extern int sync_ntp_time_flag;         // 开机后是否同步NTP时间
extern char tutu_play_sos_key_tts;
/**
 * 网络日志
 * 1：开启网络日志， 0：关闭网络日志
 */
extern int tutu_net_logger;

/**
 * 网络日志级别
 * All:0  Debug:1  Info:2  Error:3
 */
extern int tutu_net_logger_level;

/**
 * 核心配置文件保存标记
 * 0:无保存需求  1：需要保存
 */
extern int tutu_save_config_flag;


extern char tutu_device_imei[];
extern int tutu_factory_test_mode;
extern int tutu_factory_shake_counter;
extern int tutu_factory_mic_irq;
extern int tutu_show_logger;
extern int tutu_gps_logger;
extern int tutu_gsensor_logger;//是否开启gsensor日志,上传服务器
extern int tutu_gsensor_uart_logger;//是否开启gsensor日志,上传服务器

//整个任务计时器
extern uint32_t tutu_process_time_count;
extern int tutu_gps_logger;
/**
 * 初始化
 */
void xlx_core_init(void);

/**
 * 开始
 */
void tutucore_enter(void);

/*
 * 飞行模式逻辑代码 
 */
void tutucore_fly_mode(void);

/*
 * 保持多久定位
 * @param s 持续秒数
 */
void tutucore_hold_gps(int s);


/**
 *保存配置文件
 */
void tutucore_save_config(void);

/**
 *加载配置文件
 */
void tutucore_load_config(void);

/**
 *加载为默认配置
 */
void tutucore_load_default_config(void);

//保存连接服务器用的信息
void tutucore_save_servercfg(void);
void tutucore_upload_SOS_alert(void);   // 上报SOS到服务器

void tutu_set_sync_ntp_state(unsigned char sync_flag);
unsigned char tutu_get_sync_ntp_state(void);
void set_led_delay_turn_off_tick(uint16_t tick);
void set_speaker_delay_turn_off_tick(uint16_t tick);
void set_delay_auto_sos_alarm_falg(char flag);
char get_auto_fly_flag(void);

#endif /* tutu_core_h */
